import math
import time
import numpy as np
import torch
from d2l import torch as d2l
from func import Timer

"""
为了说明矢量化为什么如此重要
在一种方法中，我们将使用Python的for循环遍历向量；
在另一种方法中，我们将依赖对+的调用
"""


n = 100000
a = torch.ones(n).reshape(-1, 400)
b = torch.ones(n).reshape(-1, 400)
c = torch.zeros_like(a)
timer = Timer()

# 方法一：for循环遍历向量
for i in range(a.shape[0]):
    for j in range(a.shape[1]):
        c[i, j] = a[i, j] + b[i, j]
print(f'{timer.stop():.5f} sec')

# 方法二：使用PyTorch的+调用
timer.start()
d = a + b
print(f'{timer.stop():.5f} sec')
